/**
 * 
 */
package bplusfile;

import java.util.BitSet;

/**
 * Clase para el manejo de un set de bits de tamaño 8 (1 byte)
 *
 */
public class ByteBitSet extends BitSet {
	
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	/**
	 * Constructor que toma un byte y lo pasa al bitset interpretandolo como codificado en binario
	 * sin signo siendo el MSB el 7
	 * @param b
	 */
	public ByteBitSet(byte b) {
		super(8);
		setByte(b);
		
	}
	
	/**
	 * Método que setea el ByteSet según un byte pasado como argumento al que interpreta como
	 * binario sin signo con MSB7
	 * @param b
	 */
	public void setByte(byte b){
		int value = (int)b;
		
		if (value < 0) value += 256;
		
		for(int pos = 7;pos>=0;pos--){
			if(value-Math.pow(2,pos)>=0){
				value-=Math.pow(2,pos);
				this.set(pos);
			}
		}
	}
	
	/**
	 * Devuelve un String con el caracter ASCII extendido asociado al byte almacenado
	 * interpretado como binario sin signo con MSB 7
	 */
	public String toString(){
		int i,j,result;
		for(i=0,j=1,result=0;i<=7;j*=2,i++){
			if(get(i)) result+=j;
		}
		return ""+(char)result;
	}
	public String toSuperString(){
		String a = super.toString();
		a=a.replace("{","");
		a=a.replace("}","");
		a=a.replace(", ",",");
		String b[]=a.split(",");
		
		int contB=b.length-1;
		String salida="";
		for(int i=0;i<8;i++){
			if(contB>=0 && b[contB].equals(String.valueOf(i))){
				salida+="1";
				contB--;
			}else{
				salida+="0";
			}
			
		}
		return salida+" "+a;
	}

}
